widget: Set GDK_BUTTON1_MASK on emulated pointer events
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 4 Jun 2014 10:56:57 +0000 (12:56 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 4 Jun 2014 11:44:56 +0000 (13:44 +0200)
The touch_event handler was missing those when emulating pointer events
for the widgets that get GDK_TOUCH_MASK set, but have no specialized
touch handlers.

gtk/gtkwidget.c

index 2aa5acc2e0950eed432bb2c5dbcf0f936ca06e63..39c0338d393f44db131684aba4dbbebc79d748ea 100644 (file)
@@ -7218,6 +7218,9 @@ gtk_widget_real_touch_event (GtkWidget     *widget,
       bevent->button.axes = g_memdup (event->axes,
                                       sizeof (gdouble) * gdk_device_get_n_axes (event->device));
       gdk_event_set_source_device (bevent, gdk_event_get_source_device ((GdkEvent*)event));
+
+      if (event->type == GDK_TOUCH_END)
+        bevent->button.state |= GDK_BUTTON1_MASK;
     }
   else if (event->type == GDK_TOUCH_UPDATE)
     {
@@ -7226,7 +7229,7 @@ gtk_widget_real_touch_event (GtkWidget     *widget,
       bevent->any.window = g_object_ref (event->window);
       bevent->any.send_event = FALSE;
       bevent->motion.time = event->time;
-      bevent->motion.state = event->state;
+      bevent->motion.state = event->state | GDK_BUTTON1_MASK;
       bevent->motion.x_root = event->x_root;
       bevent->motion.y_root = event->y_root;
       bevent->motion.x = event->x;